import json
from country_codes import get_country_code
import pygal_maps_world.maps
from pygal.style import RotateStyle
from pygal.style import LightColorizedStyle

# 将数据加载到一个列表中
filename = '../file/population_data.json'
with open(filename) as file:
    pop_data = json.load(file)

# 打印每个国家2010年的人口数量
# for pop_dict in pop_data:
#     if pop_dict['Year'] == '2010':
#         country_name = pop_dict['Country Name']
#         population = int(float(pop_dict['Value']))
#
#         code = get_country_code(country_name)
#         if code:
#             print(code + ": " + str(population))
#         else:
#             print("Error - " + country_name)

# 创建一个包含人口数量的字典
cc_populations = {}
for pop_dict in pop_data:
    if pop_dict['Year'] == '2010':
        country_name = pop_dict['Country Name']
        population = int(float(pop_dict['Value']))

        code = get_country_code(country_name)
        if code:
            # print(code + ": " + str(population))
            cc_populations[code] = population
        # else:
            # print("Error - " + country_name)

# 将所有国家人口数量分为三个等级
cc_pops_1,cc_pops_2,cc_pops_3 = {},{},{}
for cc,pop in cc_populations.items():
    if pop < 10000000:
        cc_pops_1[cc] = pop
    elif pop < 1000000000:
        cc_pops_2[cc] = pop
    else:
        cc_pops_3[cc] = pop

# 打印看看每一组分别包含多少个国家
print(len(cc_pops_1),len(cc_pops_2),len(cc_pops_3))


wm_style = RotateStyle('#336699',base_style=LightColorizedStyle)

# 创建一个地图图标实例
wm = pygal_maps_world.maps.World(style=wm_style)
# 设置地图图标的标题文字
wm.title = "World Population"
# 给地图图标添加国家区域，每次调用add方法，传递一个标签和一个列表，并以一种颜色这种标签的地区
# wm.add('North Anerica',['ca','mx','us'])
# wm.add('Central America',['bz','cr','gt','hn','ni','pa','sv'])
# wm.add('South America',['at','bo','br','cl','co','ec','gf','gy','pe','py','sr','uy','ve'])

# 世界各国人口
# wm.add('2010',cc_populations)

# 将所有人口分为三个等级
wm.add('0-10m',cc_pops_1)
wm.add('10-1bn',cc_pops_2)
wm.add('>1bn',cc_pops_3)


wm.render_to_file('world_population.svg')
